-
Notifications
You must be signed in to change notification settings - Fork 15.4k
[clang][NFC] Clean up ASTContext.cpp #140847
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Use BuiltinType::{isInteger,isSignedInteger,isUnsignedInteger} instead
of doing the comparisons here.
|
@llvm/pr-subscribers-clang Author: Timm Baeder (tbaederr) ChangesUse BuiltinType::{isInteger,isSignedInteger,isUnsignedInteger} instead of doing the comparisons here. Full diff: https://github.com/llvm/llvm-project/pull/140847.diff 2 Files Affected:
diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h
index 5c8c0e1cf1d00..9f098edfc08ae 100644
--- a/clang/include/clang/AST/Type.h
+++ b/clang/include/clang/AST/Type.h
@@ -8583,8 +8583,7 @@ bool IsEnumDeclScoped(EnumDecl *);
inline bool Type::isIntegerType() const {
if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType))
- return BT->getKind() >= BuiltinType::Bool &&
- BT->getKind() <= BuiltinType::Int128;
+ return BT->isInteger();
if (const EnumType *ET = dyn_cast<EnumType>(CanonicalType)) {
// Incomplete enum types are not treated as integer types.
// FIXME: In C++, enum types are never integer types.
@@ -8658,8 +8657,7 @@ inline bool Type::isScalarType() const {
inline bool Type::isIntegralOrEnumerationType() const {
if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType))
- return BT->getKind() >= BuiltinType::Bool &&
- BT->getKind() <= BuiltinType::Int128;
+ return BT->isInteger();
// Check for a complete enum type; incomplete enum types are not properly an
// enumeration type in the sense required here.
diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp
index 5d7a4bef8d995..ccacaf29e001f 100644
--- a/clang/lib/AST/Type.cpp
+++ b/clang/lib/AST/Type.cpp
@@ -2108,8 +2108,7 @@ bool Type::hasIntegerRepresentation() const {
/// \returns true if the type is considered an integral type, false otherwise.
bool Type::isIntegralType(const ASTContext &Ctx) const {
if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType))
- return BT->getKind() >= BuiltinType::Bool &&
- BT->getKind() <= BuiltinType::Int128;
+ return BT->isInteger();
// Complete enum types are integral in C.
if (!Ctx.getLangOpts().CPlusPlus)
@@ -2121,8 +2120,7 @@ bool Type::isIntegralType(const ASTContext &Ctx) const {
bool Type::isIntegralOrUnscopedEnumerationType() const {
if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType))
- return BT->getKind() >= BuiltinType::Bool &&
- BT->getKind() <= BuiltinType::Int128;
+ return BT->isInteger();
if (isBitIntType())
return true;
@@ -2211,10 +2209,8 @@ bool Type::isUnicodeCharacterType() const {
/// signed, according to C99 6.2.5p4 [char, signed char, short, int, long..],
/// an enum decl which has a signed representation
bool Type::isSignedIntegerType() const {
- if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) {
- return BT->getKind() >= BuiltinType::Char_S &&
- BT->getKind() <= BuiltinType::Int128;
- }
+ if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType))
+ return BT->isSignedInteger();
if (const EnumType *ET = dyn_cast<EnumType>(CanonicalType)) {
// Incomplete enum types are not treated as integer types.
@@ -2232,15 +2228,12 @@ bool Type::isSignedIntegerType() const {
}
bool Type::isSignedIntegerOrEnumerationType() const {
- if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) {
- return BT->getKind() >= BuiltinType::Char_S &&
- BT->getKind() <= BuiltinType::Int128;
- }
+ if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType))
+ return BT->isSignedInteger();
- if (const auto *ET = dyn_cast<EnumType>(CanonicalType)) {
- if (ET->getDecl()->isComplete())
- return ET->getDecl()->getIntegerType()->isSignedIntegerType();
- }
+ if (const auto *ET = dyn_cast<EnumType>(CanonicalType);
+ ET && ET->getDecl()->isComplete())
+ return ET->getDecl()->getIntegerType()->isSignedIntegerType();
if (const auto *IT = dyn_cast<BitIntType>(CanonicalType))
return IT->isSigned();
@@ -2261,10 +2254,8 @@ bool Type::hasSignedIntegerRepresentation() const {
/// unsigned, according to C99 6.2.5p6 [which returns true for _Bool], an enum
/// decl which has an unsigned representation
bool Type::isUnsignedIntegerType() const {
- if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) {
- return BT->getKind() >= BuiltinType::Bool &&
- BT->getKind() <= BuiltinType::UInt128;
- }
+ if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType))
+ return BT->isUnsignedInteger();
if (const auto *ET = dyn_cast<EnumType>(CanonicalType)) {
// Incomplete enum types are not treated as integer types.
@@ -2282,15 +2273,12 @@ bool Type::isUnsignedIntegerType() const {
}
bool Type::isUnsignedIntegerOrEnumerationType() const {
- if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) {
- return BT->getKind() >= BuiltinType::Bool &&
- BT->getKind() <= BuiltinType::UInt128;
- }
+ if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType))
+ return BT->isUnsignedInteger();
- if (const auto *ET = dyn_cast<EnumType>(CanonicalType)) {
- if (ET->getDecl()->isComplete())
- return ET->getDecl()->getIntegerType()->isUnsignedIntegerType();
- }
+ if (const auto *ET = dyn_cast<EnumType>(CanonicalType);
+ ET && ET->getDecl()->isComplete())
+ return ET->getDecl()->getIntegerType()->isUnsignedIntegerType();
if (const auto *IT = dyn_cast<BitIntType>(CanonicalType))
return IT->isUnsigned();
|
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/45/builds/12439 Here is the relevant piece of the build log for the reference |
Use BuiltinType::{isInteger,isSignedInteger,isUnsignedInteger} instead of doing the comparisons here.